home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Programming / AmigaE / Src / Utils / EDBG / schex.e < prev    next >
Encoding:
Text File  |  1997-10-26  |  1.5 KB  |  56 lines

  1. -> a memory-display window based on scrollwin
  2.  
  3. OPT MODULE
  4.  
  5. MODULE 'class/sc','intuition/intuition','graphics/rastport',
  6.        'graphics/gfxbase','graphics/text'
  7.  
  8. EXPORT OBJECT scrollhex OF scrollwin PRIVATE
  9.   addr,font:PTR TO textfont,osx,osy
  10. ENDOBJECT
  11.  
  12. CONST ONELINE=50
  13.  
  14. PROC setmem(addr) OF scrollhex
  15.   self.addr:=addr
  16. ENDPROC
  17.  
  18. PROC extra_refresh(x,y,xs,ys,xoff,yoff,win:PTR TO window) OF scrollhex
  19.   DEF fx,fy,a,b,c,d,e,ad,base,r:PTR TO rastport,bot,rnum,addr:PTR TO LONG,s[200]:ARRAY,t[10]:STRING
  20.   r:=stdrast:=win.rport
  21.   fx:=self.font.xsize
  22.   fy:=self.font.ysize
  23.   SetFont(r,self.font)
  24.   base:=self.font.baseline
  25.   bot:=win.height-win.borderbottom-1
  26.   r.mask:=1
  27.   IF (self.osx<>xs) OR (self.osy<>ys) THEN Box(xoff,yoff,win.width-win.borderright-1,bot,0)
  28.   Colour(1)
  29.   rnum:=Bounds(Abs(xs-13)/13,1,12)
  30.   addr:=rnum*4*y+self.addr AND -2
  31.   FOR a:=1 TO ys
  32.     StringF(s,'\z\h[8]: ',addr)
  33.     ad:=addr
  34.     FOR b:=1 TO rnum DO StrAdd(s,StringF(t,'\z\h[8] ',addr[]++))
  35.     StrAdd(s,' "')
  36.     c:=EstrLen(s)
  37.     e:=rnum*4+c-1
  38.     FOR b:=c TO e DO s[b]:=IF ((d:=ad[]++)>31) AND (d<127) THEN d ELSE "."
  39.     SetStr(s,e+1)
  40.     StrAdd(s,'"')
  41.     Move(r,xoff,a-1*fy+yoff+base)
  42.     Text(r,s,Min(xs,StrLen(s)))
  43.   ENDFOR
  44.   self.osx:=xs
  45.   self.osy:=ys
  46. ENDPROC
  47.  
  48. PROC extra_init(screen) OF scrollhex
  49.   DEF gb:PTR TO gfxbase
  50.   gb:=gfxbase
  51.   self.font:=gb.defaultfont    -> needs openfont?
  52. ENDPROC
  53.  
  54. PROC extra_unit() OF scrollhex IS self.font.xsize, self.font.ysize
  55. PROC extra_max() OF scrollhex IS 1,1000
  56.